home *** CD-ROM | disk | FTP | other *** search
- package javax.swing.text;
-
- import java.awt.Color;
- import java.awt.Font;
- import java.io.IOException;
- import java.io.ObjectInputStream;
- import java.util.Enumeration;
- import java.util.Vector;
- import javax.swing.event.ChangeListener;
- import javax.swing.event.DocumentListener;
- import javax.swing.event.UndoableEditEvent;
- import javax.swing.event.DocumentEvent.EventType;
- import javax.swing.undo.CompoundEdit;
- import javax.swing.undo.UndoableEdit;
-
- public class DefaultStyledDocument extends AbstractDocument implements StyledDocument {
- public static final int BUFFER_SIZE_DEFAULT = 4096;
- protected ElementBuffer buffer;
- private transient Vector listeningStyles;
- private transient ChangeListener styleChangeListener;
- private transient ChangeListener styleContextChangeListener;
- // $FF: synthetic field
- static Class class$javax$swing$event$DocumentListener;
-
- public DefaultStyledDocument() {
- this(new GapContent(4096), new StyleContext());
- }
-
- public DefaultStyledDocument(AbstractDocument.Content var1, StyleContext var2) {
- super(var1, var2);
- this.listeningStyles = new Vector();
- this.buffer = new ElementBuffer(this, this.createDefaultRoot());
- Style var3 = var2.getStyle("default");
- this.setLogicalStyle(0, var3);
- }
-
- public DefaultStyledDocument(StyleContext var1) {
- this(new GapContent(4096), var1);
- }
-
- public void addDocumentListener(DocumentListener var1) {
- Vector var2 = this.listeningStyles;
- synchronized(var2){}
-
- try {
- int var4 = super.listenerList.getListenerCount(class$javax$swing$event$DocumentListener != null ? class$javax$swing$event$DocumentListener : (class$javax$swing$event$DocumentListener = class$("javax.swing.event.DocumentListener")));
- super.addDocumentListener(var1);
- if (var4 == 0) {
- if (this.styleContextChangeListener == null) {
- this.styleContextChangeListener = this.createStyleContextChangeListener();
- }
-
- if (this.styleContextChangeListener != null) {
- StyleContext var5 = (StyleContext)((AbstractDocument)this).getAttributeContext();
- var5.addChangeListener(this.styleContextChangeListener);
- }
-
- this.updateStylesListeningTo();
- }
- } catch (Throwable var7) {
- throw var7;
- }
-
- }
-
- public Style addStyle(String var1, Style var2) {
- StyleContext var3 = (StyleContext)((AbstractDocument)this).getAttributeContext();
- return var3.addStyle(var1, var2);
- }
-
- // $FF: synthetic method
- static Class class$(String var0) {
- try {
- return Class.forName(var0);
- } catch (ClassNotFoundException var2) {
- throw new NoClassDefFoundError(((Throwable)var2).getMessage());
- }
- }
-
- protected void create(ElementSpec[] var1) {
- try {
- if (((AbstractDocument)this).getLength() != 0) {
- ((AbstractDocument)this).remove(0, ((AbstractDocument)this).getLength());
- }
-
- ((AbstractDocument)this).writeLock();
- AbstractDocument.Content var4 = ((AbstractDocument)this).getContent();
- int var5 = var1.length;
- StringBuffer var6 = new StringBuffer();
-
- for(int var7 = 0; var7 < var5; ++var7) {
- ElementSpec var8 = var1[var7];
- if (var8.getLength() > 0) {
- var6.append(var8.getArray(), var8.getOffset(), var8.getLength());
- }
- }
-
- UndoableEdit var15 = var4.insertString(0, var6.toString());
- int var9 = var6.length();
- this.getClass();
- AbstractDocument.DefaultDocumentEvent var10 = new AbstractDocument.DefaultDocumentEvent(this, 0, var9, EventType.INSERT);
- var10.addEdit(var15);
- this.buffer.create(var9, var1, var10);
- super.insertUpdate(var10, (AttributeSet)null);
- ((CompoundEdit)var10).end();
- ((AbstractDocument)this).fireInsertUpdate(var10);
- ((AbstractDocument)this).fireUndoableEditUpdate(new UndoableEditEvent(this, var10));
- } catch (BadLocationException var13) {
- throw new StateInvariantError("problem initializing");
- } finally {
- ((AbstractDocument)this).writeUnlock();
- }
-
- }
-
- protected AbstractDocument.AbstractElement createDefaultRoot() {
- ((AbstractDocument)this).writeLock();
- SectionElement var1 = new SectionElement(this);
- this.getClass();
- AbstractDocument.BranchElement var2 = new AbstractDocument.BranchElement(this, var1, (AttributeSet)null);
- this.getClass();
- AbstractDocument.LeafElement var3 = new AbstractDocument.LeafElement(this, var2, (AttributeSet)null, 0, 1);
- Element[] var4 = new Element[]{var3};
- var2.replace(0, 0, var4);
- var4[0] = var2;
- ((AbstractDocument.BranchElement)var1).replace(0, 0, var4);
- ((AbstractDocument)this).writeUnlock();
- return var1;
- }
-
- short createSpecsForInsertAfterNewline(Element var1, Element var2, AttributeSet var3, Vector var4, int var5, int var6) {
- if (var1.getParentElement() == var2.getParentElement()) {
- ElementSpec var7 = new ElementSpec(var3, (short)2);
- var4.addElement(var7);
- var7 = new ElementSpec(var3, (short)1);
- var4.addElement(var7);
- if (var2.getEndOffset() != var6) {
- return 7;
- }
-
- Element var8 = var2.getParentElement();
- if (var8.getElementIndex(var5) + 1 < var8.getElementCount()) {
- return 5;
- }
- } else {
- Vector var15 = new Vector();
- Vector var16 = new Vector();
-
- for(Element var9 = var2; var9 != null; var9 = var9.getParentElement()) {
- var15.addElement(var9);
- }
-
- Element var17 = var1;
-
- int var10;
- for(var10 = -1; var17 != null && (var10 = var15.indexOf(var17)) == -1; var17 = var17.getParentElement()) {
- var16.addElement(var17);
- }
-
- if (var17 != null) {
- for(int var11 = 0; var11 < var10; ++var11) {
- var4.addElement(new ElementSpec((AttributeSet)null, (short)2));
- }
-
- Object var12 = null;
-
- for(int var13 = var16.size() - 1; var13 >= 0; --var13) {
- ElementSpec var18 = new ElementSpec(((Element)var16.elementAt(var13)).getAttributes(), (short)1);
- if (var13 > 0) {
- var18.setDirection((short)5);
- }
-
- var4.addElement(var18);
- }
-
- if (var16.size() > 0) {
- return 5;
- }
-
- return 7;
- }
- }
-
- return 6;
- }
-
- ChangeListener createStyleChangeListener() {
- return new StyleChangeHandler(this);
- }
-
- ChangeListener createStyleContextChangeListener() {
- return new StyleContextChangeHandler(this);
- }
-
- public Color getBackground(AttributeSet var1) {
- StyleContext var2 = (StyleContext)((AbstractDocument)this).getAttributeContext();
- return var2.getBackground(var1);
- }
-
- public Element getCharacterElement(int var1) {
- Object var2 = null;
-
- int var3;
- for(var4 = this.getDefaultRootElement(); !var4.isLeaf(); var4 = var4.getElement(var3)) {
- var3 = var4.getElementIndex(var1);
- }
-
- return var4;
- }
-
- public Element getDefaultRootElement() {
- return this.buffer.getRootElement();
- }
-
- public Font getFont(AttributeSet var1) {
- StyleContext var2 = (StyleContext)((AbstractDocument)this).getAttributeContext();
- return var2.getFont(var1);
- }
-
- public Color getForeground(AttributeSet var1) {
- StyleContext var2 = (StyleContext)((AbstractDocument)this).getAttributeContext();
- return var2.getForeground(var1);
- }
-
- public Style getLogicalStyle(int var1) {
- Style var2 = null;
- Element var3 = this.getParagraphElement(var1);
- if (var3 != null) {
- AttributeSet var4 = var3.getAttributes();
- var2 = (Style)var4.getResolveParent();
- }
-
- return var2;
- }
-
- public Element getParagraphElement(int var1) {
- Object var2 = null;
-
- int var3;
- for(var4 = this.getDefaultRootElement(); !var4.isLeaf(); var4 = var4.getElement(var3)) {
- var3 = var4.getElementIndex(var1);
- }
-
- return var4 != null ? var4.getParentElement() : var4;
- }
-
- public Style getStyle(String var1) {
- StyleContext var2 = (StyleContext)((AbstractDocument)this).getAttributeContext();
- return var2.getStyle(var1);
- }
-
- public Enumeration getStyleNames() {
- return ((StyleContext)((AbstractDocument)this).getAttributeContext()).getStyleNames();
- }
-
- protected void insert(int var1, ElementSpec[] var2) throws BadLocationException {
- if (var2 != null && var2.length != 0) {
- try {
- ((AbstractDocument)this).writeLock();
- AbstractDocument.Content var5 = ((AbstractDocument)this).getContent();
- int var6 = var2.length;
- StringBuffer var7 = new StringBuffer();
-
- for(int var8 = 0; var8 < var6; ++var8) {
- ElementSpec var9 = var2[var8];
- if (var9.getLength() > 0) {
- var7.append(var9.getArray(), var9.getOffset(), var9.getLength());
- }
- }
-
- UndoableEdit var14 = var5.insertString(var1, var7.toString());
- int var10 = var7.length();
- this.getClass();
- AbstractDocument.DefaultDocumentEvent var11 = new AbstractDocument.DefaultDocumentEvent(this, var1, var10, EventType.INSERT);
- var11.addEdit(var14);
- this.buffer.insert(var1, var10, var2, var11);
- super.insertUpdate(var11, (AttributeSet)null);
- ((CompoundEdit)var11).end();
- ((AbstractDocument)this).fireInsertUpdate(var11);
- ((AbstractDocument)this).fireUndoableEditUpdate(new UndoableEditEvent(this, var11));
- } finally {
- ((AbstractDocument)this).writeUnlock();
- }
-
- }
- }
-
- protected void insertUpdate(AbstractDocument.DefaultDocumentEvent var1, AttributeSet var2) {
- int var3 = var1.getOffset();
- int var4 = var1.getLength();
- if (var2 == null) {
- var2 = SimpleAttributeSet.EMPTY;
- }
-
- Element var5 = this.getParagraphElement(var3 + var4);
- AttributeSet var6 = var5.getAttributes();
- Element var7 = this.getParagraphElement(var3);
- Element var8 = var7.getElement(var7.getElementIndex(var3));
- int var9 = var3 + var4;
- boolean var10 = var8.getEndOffset() == var9;
- AttributeSet var11 = var8.getAttributes();
-
- try {
- Segment var12 = new Segment();
- Vector var13 = new Vector();
- ElementSpec var14 = null;
- boolean var15 = false;
- short var16 = 6;
- if (var3 > 0) {
- ((AbstractDocument)this).getText(var3 - 1, 1, var12);
- if (var12.array[var12.offset] == '\n') {
- var15 = true;
- var16 = this.createSpecsForInsertAfterNewline(var5, var7, var6, var13, var3, var9);
-
- for(int var17 = var13.size() - 1; var17 >= 0; --var17) {
- ElementSpec var18 = (ElementSpec)var13.elementAt(var17);
- if (var18.getType() == 1) {
- var14 = var18;
- break;
- }
- }
- }
- }
-
- if (!var15) {
- var6 = var7.getAttributes();
- }
-
- ((AbstractDocument)this).getText(var3, var4, var12);
- char[] var26 = var12.array;
- int var27 = var12.offset + var12.count;
- int var19 = var12.offset;
-
- for(int var20 = var12.offset; var20 < var27; ++var20) {
- if (var26[var20] == '\n') {
- int var21 = var20 + 1;
- var13.addElement(new ElementSpec(var2, (short)3, var21 - var19));
- var13.addElement(new ElementSpec((AttributeSet)null, (short)2));
- var14 = new ElementSpec(var6, (short)1);
- var13.addElement(var14);
- var19 = var21;
- }
- }
-
- if (var19 < var27) {
- var13.addElement(new ElementSpec(var2, (short)3, var27 - var19));
- }
-
- ElementSpec var28 = (ElementSpec)var13.firstElement();
- int var22 = ((AbstractDocument)this).getLength();
- if (var28.getType() == 3 && var11.isEqual(var2)) {
- var28.setDirection((short)4);
- }
-
- if (var14 != null) {
- if (var15) {
- var14.setDirection(var16);
- } else if (var7.getEndOffset() != var9) {
- var14.setDirection((short)7);
- } else {
- Element var23 = var7.getParentElement();
- int var24 = var23.getElementIndex(var3);
- if (var24 + 1 < var23.getElementCount() && !var23.getElement(var24 + 1).isLeaf()) {
- var14.setDirection((short)5);
- }
- }
- }
-
- if (var10 && var9 < var22) {
- ElementSpec var30 = (ElementSpec)var13.lastElement();
- if (var30.getType() == 3 && var30.getDirection() != 4 && (var14 == null && (var5 == var7 || var15) || var14 != null && var14.getDirection() != 6)) {
- Element var32 = var5.getElement(var5.getElementIndex(var9));
- if (var32.isLeaf() && var2.isEqual(var32.getAttributes())) {
- var30.setDirection((short)5);
- }
- }
- } else if (!var10 && var14 != null && var14.getDirection() == 7) {
- ElementSpec var29 = (ElementSpec)var13.lastElement();
- if (var29.getType() == 3 && var29.getDirection() != 4 && var2.isEqual(var11)) {
- var29.setDirection((short)5);
- }
- }
-
- if (Utilities.isComposedTextAttributeDefined(var2)) {
- ((MutableAttributeSet)var2).addAttributes(var11);
- ((MutableAttributeSet)var2).addAttribute("$ename", "content");
- }
-
- ElementSpec[] var31 = new ElementSpec[var13.size()];
- var13.copyInto(var31);
- this.buffer.insert(var3, var4, var31, var1);
- } catch (BadLocationException var25) {
- }
-
- super.insertUpdate(var1, var2);
- }
-
- private void readObject(ObjectInputStream var1) throws ClassNotFoundException, IOException {
- this.listeningStyles = new Vector();
- var1.defaultReadObject();
- if (this.styleContextChangeListener == null && super.listenerList.getListenerCount(class$javax$swing$event$DocumentListener != null ? class$javax$swing$event$DocumentListener : (class$javax$swing$event$DocumentListener = class$("javax.swing.event.DocumentListener"))) > 0) {
- this.styleContextChangeListener = this.createStyleContextChangeListener();
- if (this.styleContextChangeListener != null) {
- StyleContext var2 = (StyleContext)((AbstractDocument)this).getAttributeContext();
- var2.addChangeListener(this.styleContextChangeListener);
- }
-
- this.updateStylesListeningTo();
- }
-
- }
-
- public void removeDocumentListener(DocumentListener var1) {
- Vector var2 = this.listeningStyles;
- synchronized(var2){}
-
- try {
- super.removeDocumentListener(var1);
- if (super.listenerList.getListenerCount(class$javax$swing$event$DocumentListener != null ? class$javax$swing$event$DocumentListener : (class$javax$swing$event$DocumentListener = class$("javax.swing.event.DocumentListener"))) == 0) {
- for(int var4 = this.listeningStyles.size() - 1; var4 >= 0; --var4) {
- ((Style)this.listeningStyles.elementAt(var4)).removeChangeListener(this.styleChangeListener);
- }
-
- this.listeningStyles.removeAllElements();
- if (this.styleContextChangeListener != null) {
- StyleContext var5 = (StyleContext)((AbstractDocument)this).getAttributeContext();
- var5.removeChangeListener(this.styleContextChangeListener);
- }
- }
- } catch (Throwable var7) {
- throw var7;
- }
-
- }
-
- public void removeStyle(String var1) {
- StyleContext var2 = (StyleContext)((AbstractDocument)this).getAttributeContext();
- var2.removeStyle(var1);
- }
-
- protected void removeUpdate(AbstractDocument.DefaultDocumentEvent var1) {
- super.removeUpdate(var1);
- this.buffer.remove(var1.getOffset(), var1.getLength(), var1);
- }
-
- public void setCharacterAttributes(int var1, int var2, AttributeSet var3, boolean var4) {
- try {
- ((AbstractDocument)this).writeLock();
- this.getClass();
- AbstractDocument.DefaultDocumentEvent var7 = new AbstractDocument.DefaultDocumentEvent(this, var1, var2, EventType.CHANGE);
- this.buffer.change(var1, var2, var7);
- AttributeSet var8 = var3.copyAttributes();
- int var9 = Integer.MAX_VALUE;
-
- for(int var10 = var1; var10 < var1 + var2; var10 = var9) {
- Element var11 = this.getCharacterElement(var10);
- var9 = var11.getEndOffset();
- MutableAttributeSet var12 = (MutableAttributeSet)var11.getAttributes();
- var7.addEdit(new AttributeUndoableEdit(var11, var8, var4));
- if (var4) {
- var12.removeAttributes(var12);
- }
-
- var12.addAttributes(var3);
- }
-
- ((CompoundEdit)var7).end();
- ((AbstractDocument)this).fireChangedUpdate(var7);
- ((AbstractDocument)this).fireUndoableEditUpdate(new UndoableEditEvent(this, var7));
- } finally {
- ((AbstractDocument)this).writeUnlock();
- }
-
- }
-
- public void setLogicalStyle(int var1, Style var2) {
- Element var3 = this.getParagraphElement(var1);
- if (var3 != null && var3 instanceof AbstractDocument.AbstractElement) {
- try {
- ((AbstractDocument)this).writeLock();
- StyleChangeUndoableEdit var6 = new StyleChangeUndoableEdit((AbstractDocument.AbstractElement)var3, var2);
- ((AbstractDocument.AbstractElement)var3).setResolveParent(var2);
- int var7 = var3.getStartOffset();
- int var8 = var3.getEndOffset();
- this.getClass();
- AbstractDocument.DefaultDocumentEvent var9 = new AbstractDocument.DefaultDocumentEvent(this, var7, var8 - var7, EventType.CHANGE);
- var9.addEdit(var6);
- ((CompoundEdit)var9).end();
- ((AbstractDocument)this).fireChangedUpdate(var9);
- ((AbstractDocument)this).fireUndoableEditUpdate(new UndoableEditEvent(this, var9));
- } finally {
- ((AbstractDocument)this).writeUnlock();
- }
- }
-
- }
-
- public void setParagraphAttributes(int var1, int var2, AttributeSet var3, boolean var4) {
- try {
- ((AbstractDocument)this).writeLock();
- this.getClass();
- AbstractDocument.DefaultDocumentEvent var7 = new AbstractDocument.DefaultDocumentEvent(this, var1, var2, EventType.CHANGE);
- AttributeSet var8 = var3.copyAttributes();
- Element var9 = this.getDefaultRootElement();
- int var10 = var9.getElementIndex(var1);
- int var11 = var9.getElementIndex(var1 + (var2 > 0 ? var2 - 1 : 0));
-
- for(int var12 = var10; var12 <= var11; ++var12) {
- Element var13 = var9.getElement(var12);
- MutableAttributeSet var14 = (MutableAttributeSet)var13.getAttributes();
- var7.addEdit(new AttributeUndoableEdit(var13, var8, var4));
- if (var4) {
- var14.removeAttributes(var14);
- }
-
- var14.addAttributes(var3);
- }
-
- ((CompoundEdit)var7).end();
- ((AbstractDocument)this).fireChangedUpdate(var7);
- ((AbstractDocument)this).fireUndoableEditUpdate(new UndoableEditEvent(this, var7));
- } finally {
- ((AbstractDocument)this).writeUnlock();
- }
-
- }
-
- protected void styleChanged(Style var1) {
- this.getClass();
- AbstractDocument.DefaultDocumentEvent var2 = new AbstractDocument.DefaultDocumentEvent(this, 0, ((AbstractDocument)this).getLength(), EventType.CHANGE);
- ((CompoundEdit)var2).end();
- ((AbstractDocument)this).fireChangedUpdate(var2);
- }
-
- void updateStylesListeningTo() {
- Vector var1 = this.listeningStyles;
- synchronized(var1){}
-
- try {
- StyleContext var3 = (StyleContext)((AbstractDocument)this).getAttributeContext();
- if (this.styleChangeListener == null) {
- this.styleChangeListener = this.createStyleChangeListener();
- }
-
- if (this.styleChangeListener != null && var3 != null) {
- Enumeration var4 = var3.getStyleNames();
- Vector var5 = (Vector)this.listeningStyles.clone();
- this.listeningStyles.removeAllElements();
-
- while(var4.hasMoreElements()) {
- String var6 = (String)var4.nextElement();
- Style var7 = var3.getStyle(var6);
- int var8 = var5.indexOf(var7);
- this.listeningStyles.addElement(var7);
- if (var8 == -1) {
- var7.addChangeListener(this.styleChangeListener);
- } else {
- var5.removeElementAt(var8);
- }
- }
-
- for(int var11 = var5.size() - 1; var11 >= 0; --var11) {
- Style var12 = (Style)var5.elementAt(var11);
- var12.removeChangeListener(this.styleChangeListener);
- }
-
- if (this.listeningStyles.size() == 0) {
- this.styleChangeListener = null;
- }
- }
- } catch (Throwable var10) {
- throw var10;
- }
-
- }
- }
-